<?php
class Article {
	/**
	 * Vloží nový článek
	 * @param $nazev
	 * @param $anotace
	 * @param $obsah
	 * @param $autor
	 * @param $kategorie
	 * @param $publikovat
	 */
	function newArticle($nazev, $anotace, $obsah, $autor, $kategorie, $publikovat) {
		if($nazev == "" or $anotace == "" or $obsah == "" or $autor == ""){
			return;
		}
		$nazev = MySQLData($nazev);
		$anotace = MySQLData($anotace);
		$obsah = MySQLData($obsah);
		$autor = MySQLData($autor);
		if ($publikovat != 1) {
			$publikovat = 0;
		}
		$sql = "INSERT INTO articles (nazev, anotace, obsah, autor, vytvoreno, zmeneno, publikovat) VALUES ('$nazev', '$anotace', '$obsah', '$autor', NOW(), NOW(), '$publikovat')";
		mysql_query($sql);
		$id = mysql_insert_id();
		foreach ($kategorie as $value) {
			$kat = MySQLData($value);
			$sql = "INSERT INTO art_cat (article, category) VALUES ('$id', '$kat')";
			mysql_query($sql);
		}
	}
	
	/**
	 * Smaže článek
	 * @param $id
	 */
	function deleteArticle($id) {
		$id = MySQLData($id);
		$sql = "DELETE FROM articles WHERE id = '$id'";
		mysql_query($sql);
		$sql = "DELETE FROM art_cat WHERE article = '$id'";
		mysql_query($sql);
	}
	
	/**
	 * Upravý článek
	 * @param $id
	 * @param $nazev
	 * @param $anotace
	 * @param $obsah
	 * @param $kategorie
	 */
	function editArticle($id, $nazev, $anotace, $obsah, $kategorie) {
		$nazev = MySQLData($nazev);
		$anotace = MySQLData($anotace);
		$obsah = MySQLData($obsah);
		$id = MySQLData($id);
		if($nazev == "" or $anotace == "" or $obsah == "" or $id == ""){
			return;
		}
		$sql = "UPDATE articles SET nazev = '$nazev', anotace = '$anotace', obsah = '$obsah', zmeneno = NOW() WHERE id = '$id' LIMIT 1";
		mysql_query($sql);
		$sql = "DELETE FROM art_cat WHERE article = '$id'";
		mysql_query($sql);
		foreach ($kategorie as $value) {
			$kat = MySQLData($value);
			$sql = "INSERT INTO art_cat (article, category) VALUES ('$id', '$kat')";
			mysql_query($sql);
		}
	}
	
	/**
	 * Vrátí všechny články
	 * @return array
	 */
	function getArticles() {
		$articles = array();
		if(func_num_args() != 0 and is_array(func_get_arg(0))){
			$ids = func_get_arg(0);
		}else{
			$ids = func_get_args();
		}
		$sql = "SELECT * FROM articles";
		$stranka = $_GET["page"];
		if(empty($stranka)){
			$stranka = 1;
		}
		$stranka = ($stranka + ($stranka * (Settings::get("strankovani") - 1))) - Settings::get("strankovani");
		$zobraz = Settings::getStrankovani();
		if(count($ids)>0){
			$sql .= " WHERE";
			foreach ($ids as $value) {
				if($ok){
					$sql .= " OR";
				}
				$sql .= " id = '$value'";
				$ok = true;
			}
		}
		$sql .= " LIMIT $stranka, $zobraz";
		$ps = mysql_query($sql);
		while ($a = mysql_fetch_assoc($ps)){
			$articles[] = self::getArticle($a["id"]);
		}
		return $articles;
	}
	
	/**
	 * 
	 * Enter description here ...
	 */
	function countArticles() {
		return mysql_result(mysql_query("SELECT COUNT(*) FROM articles"), 0);
	}
	
	/**
	 * Vrátí pole s článkem podle id
	 * @param $id
	 * @return arary
	 */
	function getArticle($id) {
		$article = array();
		$id = MySQLData($id);
		if($id == ""){
			return;
		}
		$sql = "SELECT * FROM articles WHERE id = '$id'";
		$ps = mysql_query($sql);
		while ($a = mysql_fetch_assoc($ps)){
			$article["nazev"] = $a["nazev"];
			$article["anotace"] = $a["anotace"];
			$article["obsah"] = $a["obsah"];
			$article["autor"] = $a["autor"];
			$article["vytvoreno"] = $a["vytvoreno"];
			$article["zmeneno"] = $a["zmeneno"];
			$article["id"] = $a["id"];
			$article["kategorie"] = array();
			$article["kategorie"] = self::getCategories($article["id"]);
		}
		return $article;
	}
	
	/**
	 * Vrátí články, které odpovídají vyhledávání
	 * @param $query (co hledám)
	 * @param $category (v jakých kateogriích, all prohledá všechny kategorie)
	 * @param $nazev - má prohledat názvy?
	 * @param $anotace - má prohledat anotace?
	 * @param $obsah - má prohledat obsah?
	 * @param $podkategorie - mají se prohledat i podkategorie?
	 * @return arary
	 */
	function searchArticle($query, $category, $nazev, $anotace, $obsah, $podkategorie) {
		$ids = array();
		$query = MySQLData($query);
		/*
		 * Zkontroluje, jestli není dotaz prázdný, jestli je vybrána alespoň jedna položka kde hledat nebo jestli dotaz neobsahuje html tag
		 */
		if($query == "" OR ($nazev != 1 AND $anotace != 1 AND $obsah != 1) OR preg_match('/<.*>/', $query)){
			return false;
		}
		if(count($category)==0 or $category == "all"){
			$category[0] = "all";
		}elseif($podkategorie == 1){
			$podkategorie = array();
			foreach ($category as $cat) {
				$podkategorie = array_merge($podkategorie, Category::getChildrensIds($cat));
			}
			$category = array_merge($category, $podkategorie);	
		}
		$sql = "SELECT id FROM articles WHERE ";
		if($nazev == 1){
			$sql .= "nazev LIKE '%$query%' ";
			$ok = true;
		}
		if($obsah == 1){
			if($ok){
				$sql .= "OR ";
			}
			$sql .= "obsah LIKE '%$query%' ";
			$ok = true;
		}
		if($anotace == 1){
			if($ok){
				$sql .= "OR ";
			}
			$sql .= "anotace LIKE '%$query%' ";
		}
		$sql .= "AND publikovat = '1'";
		$ps = mysql_query($sql);
		while ($a = mysql_fetch_assoc($ps)){
			$id = $a["id"];
			if (in_array("all", $category)) {
				$ids[] = $id;
			}else{
				if (count(array_intersect($category, self::getCategories($id)))>0) {
					$ids[] = $id;
				}
			}
		}
		return self::getArticles($ids);
	}
	
	/**
	 * Vrátí pole s kategoriemi, kde je článek
	 * @param $id článku
	 * @return arary
	 */
	function getCategories($id) {
		$ids = array();
		$sql = "SELECT category FROM art_cat WHERE article = '$id'";
		$s = mysql_query($sql);
		while ($a = mysql_fetch_assoc($s)){
			$ids[] = $a["category"];
		}
		return $ids;
	}
	
	function generateStrankovani() {
		$pocet = Article::countArticles();
		$stranek = ceil($pocet / Settings::getStrankovani());
		$aktualni = $_GET["page"];
		if($stranek>5){
			if($aktualni > 2){
				$posledni = $aktualni + 2;
				$prvni = $aktualni - 2;
			}else{
				$posledni = 5;
				$prvni = 1;
			}
			if($posledni > $pocet){
				$posledni = $pocet;
			}
			if(($aktualni+1)==$pocet){
				$prvni = $prvni - 1;
			}
			if($aktualni == $pocet){
				$prvni = $prvni - 2;
			}
			echo "<a href=\"?clanky&page=1\">Na začátek</a>";
			for ($i = $prvni; $i <= $posledni; $i++) {
				echo "<a href=\"?clanky&page=$i\"";
				if($i == $aktualni){
					echo ' class="aktual"';
				}
				echo ">$i</a>";
			}
			echo "<a href=\"?clanky&page=$pocet\">Na konec</a>";
		}else{
			for ($i = 1; $i <= $stranek; $i++) {
				echo "<a href=\"?clanky&page=$i\"";
				if($i == $aktualni){
					echo ' class="aktual"';
				}
				echo ">$i</a>";
			}
		}
	}
}
?>